import request from "@/utils/request";

const TESTPAPERINFO_BASE_URL = "/wz/exam/test_paper_info";

class TestPaperInfoAPI {
  /** 获取试卷信息表分页数据 */
  static getPage(queryParams?: TestPaperInfoPageQuery) {
    return request<any, PageResult<TestPaperInfoPageVO[]>>({
      url: `${TESTPAPERINFO_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  }

  /**
   * 获取试卷信息表表单数据
   *
   * @param id TestPaperInfoID
   * @returns TestPaperInfo表单数据
   */
  static getFormData(id: number) {
    return request<any, TestPaperInfoForm>({
      url: `${TESTPAPERINFO_BASE_URL}/detail?id=` + id,
      method: "get",
    });
  }

  /** 添加试卷信息表*/
  static add(data: TestPaperInfoForm) {
    return request({
      url: `${TESTPAPERINFO_BASE_URL}/save`,
      method: "post",
      data: data,
    });
  }

  /**
   * 更新试卷信息表
   *
   * @param id TestPaperInfoID
   * @param data TestPaperInfo表单数据
   */
  static update(data: TestPaperInfoForm) {
    return request({
      url: `${TESTPAPERINFO_BASE_URL}/update`,
      method: "put",
      data: data,
    });
  }

  /**
   * 批量删除试卷信息表，多个以英文逗号(,)分割
   *
   * @param ids 试卷信息表ID字符串，多个以英文逗号(,)分割
   */
  static deleteByIds(ids: string) {
    return request({
      url: `${TESTPAPERINFO_BASE_URL}/remove?ids=` + ids,
      method: "delete",
    });
  }

  /**
   * 获取试卷预览URL
   *
   * @param id TestPaperInfoID
   * @returns 预览URL
   */
  static getPrintUrl(id: number) {
    return request({
      url: `${TESTPAPERINFO_BASE_URL}/printPaperInfo?testPaperInfoId=` + id,
      method: "get",
      responseType: "blob",
    });
  }
}

export default TestPaperInfoAPI;

/** 试卷信息表分页查询参数 */
export interface TestPaperInfoPageQuery extends PageQuery {
  /** 试卷名称 */
  name?: string;
  /** 年级id */
  gradeInfoId?: number;
  /** 所属科目id */
  subjectId?: number;
  schoolType?: number;
}

/** 试卷信息表表单对象 */
export interface TestPaperInfoForm {
  /** 试卷id */
  id?: number;
  /** 试卷名称 */
  name?: string;
  /** 备注 */
  remark?: string;
  /** 学校类型 */
  schoolType?: number;
  /** 年级id */
  gradeInfoId?: number;
  /** 所属科目id */
  subjectId?: number;
  /** 排序 */
  sort?: number;
  /** 考试时间 */
  examTime?: number;
  /** 是否发布 */
  publishFlag?: number;
}

/** 试卷信息表分页对象 */
export interface TestPaperInfoPageVO {
  /** 试卷名称 */
  name?: string;
  createTime?: string;
  /** 备注 */
  remark?: string;
  /** 试卷总分 */
  mark?: number;
  /** 年级id */
  gradeInfoId?: number;
  /** 所属科目id */
  subjectId?: number;
  /** 考试时间 */
  examTime?: number;
  /** 是否发布 */
  publishFlag?: number;
  /** 试题数量 */
  questionNumber?: number;
}
